package com.deng.hadoop.mapreduce.demo.weather;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Partitioner;

/**
 * Created By DengLibin
 * Date: 19-4-3
 * Time: 上午10:22
 * Desc: 分区器 决定了map的输出的key进入哪一个reduce （reduce数可以设置 默认1）
 */
public class WeatherPartitioner extends Partitioner<TianQi, IntWritable> {

    /**
     * 返回当前key对应的分区号（小于设置的reduce任务数）
     * @param tianQi
     * @param intWritable
     * @param numPartitions reduce任务数量
     * @return
     */
    @Override
    public int getPartition(TianQi tianQi, IntWritable intWritable, int numPartitions) {
        return tianQi.getYear() % numPartitions; //用年份对分区数 取模 得到该年份的数据该进入哪个分区（reduce任务,一个reduce任务对应一个输出文件）
    }
}
